package main

import "fmt"

func main() {
	a1 := [...]int{1, 3, 5, 7, 9, 11, 13, 15, 17}
	s1 := a1[:]
	// 删掉索引为1的那个3
	// s1[0] = 100
	s1 = append(s1[:1], s1[2:]...)
	fmt.Printf("len(s1): %d ; cap(s1): %d;\n", len(s1), cap(s1)) // 此时容量还是9 长度是8 切片切的是那8个
	fmt.Printf("len(a1): %d ; cap(a1): %d;\n", len(a1), cap(a1)) // 此时容量还是9 长度是9 原数组还是9位
	// append改变了原数组 3 不存在了  最后一位17 没有被 替换 改变 移动  前边的数字往前进了一位  17 进了一位 但自身为改变
	// append 相当于把 a1[1] = a1[2] => 剔除a[1]后 整体往前替换了一位
	// 向前一位赋值自身  17最后一位  没有后一位  维持自身的值17
	// 1， 3， 5， 7， 9， 11， 13， 15， 17
	//（1）， 5 (<= 3)， 7 (<= 5)， 9 (<= 7)， 11 (<= 9)， 13 (<= 11)， 15 (<= 11)， 17 (<= 15)
	//
	// 切片对应的是一个底层数组  指向长度是8
	// 原数组还是9位

	// fmt.Println(s1)
	// fmt.Println(a1)

	// 总结:
	// 相当于把第2个数（索引为1）删除掉了
	// append修改底层数组
	// append把 5 7 9 11 13 15 17 左移了一位
	// 切片把3删除了 （替换了）
}
